#ifndef XIMAGEPRO_H
#define XIMAGEPRO_H

#include <QObject>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

class XImagePro : public QObject
{
    Q_OBJECT
public:
    explicit XImagePro(QObject *parent = nullptr);

    //设置原图，会清理之前的处理结果
    void set(cv::Mat mat1, cv::Mat mat2);

    //获取处理后的结果
    cv::Mat get() {return des;}

    //设置亮度(0~100)和对比度(1.0~3.0)
    void gain(double bright, double contrast);

    //图像旋转
    void rotate90();
    void rotate180();
    void rotate270();

    //图像镜像
    void flipX();
    void flipY();
    void flipXY();

    //图像尺寸
    void resize(int width, int height);

    //图像金字塔
    void pyDown(int count); //高斯金字塔
    void pyUp(int count);   //拉普拉斯金字塔

    //视频画面裁剪
    void clip(int x, int y, int w, int h);

    //转为灰度图
    void gray();

    //添加水印
    void mark(int x, int y, double a);  //图片放src2

    //视频融合
    void blend(double a); //a第一个视频的透明度

    //视频合并
    void merge();


signals:

private:
    //原图
    cv::Mat src1, src2;
    //目标图
    cv::Mat des;
};

#endif // XIMAGEPRO_H
